#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//
//using namespace std;
//
//long long a, b, n;
//long long week, i, ret;
//int main()
//{
//	cin >> a >> b >> n;
//	week = 5 * a + 2 * b;
//
//	i = n / week;
//	ret += 7 * i;
//	n -= week * i;
//	for (int j = 0;j < 5; j++)
//	{
//		n -= a;
//		ret++;
//		if (n <= 0)
//		{
//			cout << ret << endl;
//			return 0;
//		}
//	}
//	for (int j = 0; j < 2; j++)
//	{
//		n -= b;
//		ret++;
//		if (n <= 0)
//		{
//			cout << ret << endl;
//			return 0;
//		}
//	}
//	return 0;
//}


//#include<iostream>
//#include<algorithm>
//using namespace std;
//
//int Prime_sieve(int n)
//{
//	int prime = 2;
//	for (int i = 2; i <= n / 2; i++)
//	{
//		int flag = 0;
//		for (int j = 2; j < i; j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 1;
//				break;
//			}
//		}
//		if (flag == 0)
//			prime = max(prime, i);
//	}
//	return prime;
//}
//
//int n, x;
//int main()
//{
//	cin >> n;
//	int prime = Prime_sieve(n);
//	
//
//	for (int m = n - prime + 1; m <= n; m++)
//	{
//		int flag = 0;
//		for (int i = 2; i < m; i++)
//		{
//			if (m % i == 0)
//			{
//				flag = 1;
//				break;
//			}
//		}
//		if (flag == 0)
//			continue;
//		int ret = m - prime + 1;
//		if (ret > m - prime && ret <= m)
//		{
//			x = min(x, ret);
//		}
//	}
//	cout << x << endl;
//	return 0;
//}


#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int tmpNums[50010];
int ret = 0;

void mergeSort(vector<int>& nums, int left, int right) {
	if (left >= right)
		return;

	int mid = (left + right) >> 1;
	//[left,mid] [mid+1,right]
	mergeSort(nums, left, mid);
	mergeSort(nums, mid + 1, right);

	int cur1 = left, cur2 = mid + 1, i = 0;
	while (cur1 <= mid && cur2 <= right) {
		if (nums[cur1] <= nums[cur2]) {
			tmpNums[i++] = nums[cur2++];
			// tmpIndex[i++]=index[cur2++];
		}
		else {
			if (nums[cur1] > 2 * nums[cur2])
				ret += right - cur2 + 1;
			tmpNums[i++] = nums[cur1++];
		}
	}
	while (cur1 <= mid) {
		tmpNums[i++] = nums[cur1++];
	}
	while (cur2 <= right) {
		tmpNums[i++] = nums[cur2++];
	}

	for (int i = left; i <= right; i++) {
		nums[i] = tmpNums[i - left];
	}
}
int reversePairs(vector<int>& nums) {
	int n = nums.size();
	mergeSort(nums, 0, n - 1);
	return ret;
}



int main()
{
	vector<int> ret = { 5,4,3,2,1 };
	cout << reversePairs(ret) << endl;
	return 0;
}